   

//Dep 是一个发布订阅模式

   var uid=0
//Dep在observer中实例化   
class Dep{
    constructor(){
       // console.log('我是Dep类的构造器')
        this.id=uid++
        //用数组存贮自己的订阅者  watcher的实例向里面放
        //this.subs数组里面 其实放的是watcher的实例
        this.subs=[]
    }
    //添加订阅
    addSub(sub){
       this.subs.push(sub)
    }
    //添加依赖
    depend(){
        //Dep.target 就是我们自己指定的全局位置 window.target也行 只要全局唯一 没有歧义就行
        if(Dep.target){
            // console.log('mvvvvvvvv')
            // console.log(this)
            // console.log(Dep.target)//Dep.target 其实是一个 watcher
            // console.log('mvvvvvvvv')
            this.addSub(Dep.target)
        }
    }
    //通知更新
    notify(){
        //console.log('我是notify')
        //浅克隆一份
        const subs=this.subs.slice()
        // console.log('rrrrrr')
        // console.log(subs)
        // console.log('rrrrr')

        for(let i=0;i<subs.length;i++){
            subs[i].update()//每一个都调用update方法  这个方法是Watcher的
        }
    }

}